/**
 * @brief Types.h
 */

#ifndef TYPES_H_
#define TYPES_H_

#include <string>


enum ParameterTyp {
  ACTIVATION = 0,
  ERROR = 1
};

enum LayerIndex {
  LAYER_IN = 0,
  LAYER_HIDDEN,
  LAYER_OUT
};

enum SensorIndex
{
  RIGHT_FRONT = 0,
  RIGHT_MIDDLE = 1,
  RIGHT = 2,
  RIGHT_BACK = 3,
  LEFT_BACK = 4,
  LEFT = 5,
  LEFT_MIDDLE = 6,
  LEFT_FRONT = 7,
  NUM_SENS = 8
};

enum Action {
  ALEFT,
  ARIGHT,
  AFORWARD,
  ABACKWARD,
  NUM_ACTION
};

inline std::string printAction(const Action& index)
{
  switch(index)
  {
    case ALEFT: return "ALEFT";
    case ARIGHT: return "ARIGHT";
    case AFORWARD: return "AFORWARD";
    case ABACKWARD: return "ABACKWARD";
    default: return "--";
  }
  return "--";
}

inline std::string printSensor(const SensorIndex& index)
{
  switch(index)
  {
    case RIGHT_FRONT: return "RIGHT_FRONT";
    case RIGHT_MIDDLE: return "RIGHT_MIDDLE";
    case RIGHT: return "RIGHT";
    case RIGHT_BACK: return "RIGHT_BACK";
    case LEFT_BACK: return "LEFT_BACK";
    case LEFT: return "LEFT";
    case LEFT_MIDDLE: return "LEFT_MIDDLE";
    case LEFT_FRONT: return "LEFT_FRONT";
    case NUM_SENS: return "NUM_SENS";
    default: return "--";
  }
  return "--";
}

#endif /* TYPES_H_ */
